package cc.aiee.wxpay.core.pojo.dto;

import cc.aiee.core.interfaces.PayJsonBeanInterface;
import cc.aiee.core.kit.KitJson;
import lombok.Data;
import lombok.EqualsAndHashCode;

@Data
@EqualsAndHashCode(callSuper = false)
public class WxPayNotifyDTO extends WxPayXmlDTO implements PayJsonBeanInterface {

	private String appid;

	private String mch_id;

	private String device_info;
	private String nonce_str;
	private String sign;
	private String sign_type;
	private String openid;
	// 用户是否关注公众账号，Y-关注，N-未关注
	private String is_subscribe;
	// 交易类型
	private String trade_type;
	// 付款银行
	private String bank_type;
	// 订单金额
	private Integer total_fee;
	// 应结订单金额
	private Integer settlement_total_fee;

	// 标价币种
	private String fee_type;

	// 现金支付金额
	private Integer cash_fee;
	// 现金支付币种
	private String cash_fee_type;
	// 总代金券金额
	private Integer coupon_fee;
	// 代金券使用数量
	private Integer coupon_count;

	/**
	 * 待完善内容 验证签名是所有字段需要参加
	 * <li>coupon_type_$n 代金券类型</li>
	 * <li>coupon_id_$n 代金券ID</li>
	 * <li>coupon_fee_$n 单个代金券支付金额</li>
	 */
	// 微信支付订单号
	private String transaction_id;
	// 商户订单号
	private String out_trade_no;
	// 商家数据包,原样返回
	private String attach;
	// 支付完成时间,格式为yyyyMMddHHmmss
	private String time_end;

	@Override
	public String toJson() {
		return KitJson.toJSONString(this);
	}

	@Override
	public String toJson(boolean prettyFormat, boolean ignoreNull) {
		return KitJson.toJSONString(this, prettyFormat, ignoreNull);
	}

}
